const {HttpException} = require('../core/http-exception')
const catchError = async (ctx, next) => {
  try {
    await next()
  } catch (error) {
    const isHttpException = error instanceof HttpException
    // 开发环境
    // 生产环境
    const isDev = global.config.environment === 'env'
    // 已知异常
    if(isDev && !isHttpException) {
      throw error
    }
    if(isHttpException) {
      ctx.body = {
        msg: error.msg,
        error_code: error.errorCode,
        request: `${ctx.method} ${ctx.path}`
      }
      ctx.status = error.code
    } else {
      // 未知异常
      ctx.body = {
        msg: 'we made a mistake 0',
        error_code: 999,
        request: `${ctx.method} ${ctx.path}`
      }
      ctx.status = 500
    }
    // error 堆栈调用信息
    // error 简化 清晰明了的信息
    // HTTP Status code 2xx 3xx 4xx 5xx

    // message
    // error_code 详细 开发者自己定义 10001 10003
    // request_url 当前请求的url
    
    // 已知型错误
    // 未知型错误  程序潜在错误 无意识的错误 根本就不知道
    // 连接数据库 账号 密码 输错了

  }
}

module.exports = catchError